Kameleon-Plus  0.3.2
Tracer.h
Go to the documentation of this file.
1 #ifndef CCMC_TRACER_H
2 #define CCMC_TRACER_H
3 
4 //#ifdef __cplusplus
5 //#include <map>
6 #include <vector>
7 #include <string>
8 #include "Kameleon.h"
9 #include "Interpolator.h"
10 #include "Point3f.h"
11 #include "Fieldline.h"
12 #include <boost/unordered_map.hpp>
13 //using namespace std;
20 namespace ccmc
21 {
22  class Kameleon;
23 
30  class Tracer
31  {
32  public:
34  Tracer(Kameleon * kameleon);
36  ~Tracer();
37  //void open(char * filename);
38  //void loadVariable(char * variable);
39  void setInnerBoundary(float r_end);
40  void setMaxIterations(int stepMax);
41  void setDn(float dn);
42  void setTilt(float tilt);
43  void setMissing(float missing);
44  void setMaxArcLength(float maxArcLength);
45  Fieldline
46  bidirectionalTrace(const std::string& variable, const float& startComponent1, const float& startComponent2,
47  const float& startComponent3);
48  Fieldline bidirectionalTraceWithDipole(const std::string& variable, const float& startComponent1, const float& startComponent2,
49  const float& startComponent3);
50  Fieldline unidirectionalTrace(const std::string& variable, const float& startComponent1, const float& startComponent2,
51  const float& startComponent3, const Direction& dir = FOWARD);
52  Fieldline unidirectionalTraceWithDipole(const std::string& variable, const float& startComponent1, const float& startComponent2,
53  const float& startComponent3, const Direction& dir = FOWARD);
54  Fieldline findLastClosed(Point3f position, int stepMax);
55  std::vector<Fieldline> getLastClosedFieldlines(int numberOfFieldlines, int stepMax, int numberOfPointsPerReducedFieldline);
56  bool isClosed(Fieldline& fieldline);
57  void setUseMaxArcLength(bool useMaxArcLength);
58  Point3f getVector(const std::string& variable, const Point3f& position, float& dComponent1,
59  float& dComponent2, float& dComponent3, const Interpolator * interpolator);
60  void setRegionOfInterest(Point3f min, Point3f max);
61  void setUseRegionOfInterest(bool useROI);
63  //void close();
64 
65  private:
66  std::string filename;
67 
68  float r_end;
69  int step_max;
70  float dn;
71  float tilt;
72  float missing;
73  float maxArcLength;
74  std::string b_,bx_,by_,bz_;
75  std::string br_,bphi_,btheta_;
76  std::string ux_,uy_,uz_;
77  std::string ur_,uphi_,utheta_;
78  std::string exb_, exbx_,exby_,exbz_;
79  std::string j_, jx_, jy_, jz_;
80  std::string jr_, jphi_, jtheta_;
81  std::string b1_, b1x_, b1y_, b1z_;
82 
83  bool useMaxArcLength;
84  bool useROI;
85  Point3f minROI;
86  Point3f maxROI;
87 
88  Fieldline cartesianTrace(const std::string& variable, const float& startComponent1, const float& startComponent2,
89  const float& startComponent3, Interpolator * interpolator, const Direction& dir = FOWARD);
90  Fieldline cartesianTraceWithDipole(const std::string& variable, const float& startComponent1, const float& startComponent2,
91  const float& startComponent3, Interpolator * interpolator, const Direction& dir = FOWARD);
92  Fieldline sphericalTrace(const std::string& variable, const float& startComponent1, const float& startComponent2,
93  const float& startComponent3, Interpolator * interpolator, const Direction& dir = FOWARD);
94 
95  bool isValidPoint(const Point3f& position, const Point3f& min, const Point3f& max);
96  bool isValidIteration(int iterations, int max);
97  float calculateDT(float& dComponent1, float& dComponent2, float& dComponent3, float& dn);
98  Kameleon * kameleon;
99  boost::unordered_map<std::string, std::vector<std::string> > componentNamesMap;
100  void initializeComponentNamesMap();
101  bool interpolatorAllocated;
102 
103 
104 
105  };
106 }
107 
108 //#endif//__cplusplus
109 #endif//CCMC_TRACER_H